const { crashReporter } = require('electron');

const handleCrashReporter = () => {
    /**
     * 初始化崩溃报告器
     * 1.该方法必须在使用其他 崩溃报告器 的API之前调用
     * 2.崩溃报告器一旦启动就无法禁用
     */
    crashReporter.start({
        // 用于接收 Dump 文件的服务器URL。当 Dump 文件生成时, 将往该 URL 发送 POST 请求上传 Dump 文件
        submitURL: '',
        // 用于描述产品的名称, 该配置在上传 Dump 文件的请求中会带上
        // productName: 'electron32.1.2-study',
        // 用于描述产品所属公司的名称。该配置在上传 Dump 文件的请求中会带上
        // companyName: 'ahuan',
        // 默认值为true, 当值为 false 时将不上传 Dump 文件到服务器
        uploadToServer: false,
        // 默认值为false, 当值为 true 时将不会把主进程的 crashes 转发到系统的崩溃处理器
        // ignoreSystemCrashHandler: false,
        // 默认值为false, 当值为 true 时将会限制一定时间内上报 Dump 文件的数量
        // rateLimit: false,
        // 是否压缩崩溃报告(使用带有 Content-Encoding: gzip 的头部)
        // compress: true,
    });

    // 制造崩溃生成 dump 文件
    // setTimeout(() => {
    //     console.log('主动制造崩溃')
    //     process.crash()
    // }, 3000)
}

const getCrashLog = () => {
    // 返回所有已上传的崩溃报告。 每个报告包含日期以及上传ID。
    /**
     * version string - Electron 的版本.
     * platform string - 例如 'win32'.
     * process_type string - 例如 'renderer'.
     * guid string - 例如 '5e1286fc-da97-479e-918b-6bfb0c3d1c72'.
     * _version string - package.json 里的版本号.
     * _productName string - crashReporter options 对象中的产品名字
     * prod string - 基础产品的名称。 在这种情况下是Electron。
     * _companyName string - crashReporter options 对象中的公司名称
     * upload_file_minidump File - minidump 格式的崩溃报告
     * All level one properties of the extra object in the crashReporter options object
     */
    return crashReporter.getUploadedReports()
}

module.exports = {
    handleCrashReporter,
    getCrashLog
}


